
using System;
using System.Collections.Generic;
using System.Text;

namespace ScrewTurn.Wiki.PluginFramework {

	/// <summary>
	/// Contains the Content of a Page.
	/// </summary>
	[Serializable]
	public class PageContent {

		/// <summary>
		/// The PageInfo object.
		/// </summary>
		protected PageInfo pageInfo;
		/// <summary>
		/// The Title of the Page.
		/// </summary>
		protected string title;
		/// <summary>
		/// The Username of the user who modified the Page.
		/// </summary>
		protected string user;
		/// <summary>
		/// The Date/Time of the last modification.
		/// </summary>
		protected DateTime lastModified;
		/// <summary>
		/// The comment of the editor, about this revision.
		/// </summary>
		protected string comment;
		/// <summary>
		/// The Content of the Page (WikiMarkup).
		/// </summary>
		protected string content;
		/// <summary>
		/// The Pages linked in this Page.
		/// </summary>
		protected PageInfo[] linkedPages = new PageInfo[0];

		/// <summary>
		/// Initializes a new instance of the <b>PageContent</b> class.
		/// </summary>
		/// <param name="pageInfo">The PageInfo object.</param>
		/// <param name="title">The Title.</param>
		/// <param name="user">The User that last modified the Page.</param>
		/// <param name="lastModified">The last modification Date and Time.</param>
		/// <param name="comment">The Comment of the editor, about this revision.</param>
		/// <param name="content">The <b>unparsed</b> Content.</param>
		public PageContent(PageInfo pageInfo, string title, string user, DateTime lastModified, string comment, string content) {
			this.pageInfo = pageInfo;
			this.title = title;
			this.user = user;
			this.lastModified = lastModified;
			this.content = content;
			this.comment = comment;
		}

		/// <summary>
		/// Gets the PageInfo.
		/// </summary>
		public PageInfo PageInfo {
			get { return pageInfo; }
		}

		/// <summary>
		/// Gets the Title.
		/// </summary>
		public string Title {
			get { return title; }
		}

		/// <summary>
		/// Gets the User.
		/// </summary>
		public string User {
			get { return user; }
		}

		/// <summary>
		/// Gets the last modification Date and Time.
		/// </summary>
		public DateTime LastModified {
			get { return lastModified; }
		}

		/// <summary>
		/// Gets the Comment of the editor, about this revision.
		/// </summary>
		public string Comment {
			get { return comment; }
		}

		/// <summary>
		/// Gets the <b>unformatted</b> Content.
		/// </summary>
		public string Content {
			get { return content; }
		}

		/// <summary>
		/// Gets or sets the Linked Pages.
		/// </summary>
		public PageInfo[] LinkedPages {
			get { return linkedPages; }
			set { linkedPages = value; }
		}

	}

}
